﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DTO_MechSysWeb;
using BLL_MechSysWeb;
using System.Web.Security;

namespace WEB_MechSysWeb.Paginas_Administrador
{
    public partial class AgendamentosPendentes : System.Web.UI.Page
    {
        DTOAgendamento dtoAgendamento = new DTOAgendamento();
        BLLAgendamento bllAgendamento = new BLLAgendamento();
        DTOCliente dtoCliente = new DTOCliente();
        BLLCliente bllCliente = new BLLCliente();
        DTOVeiculo dtoVeiculo = new DTOVeiculo();
        BLLVeiculo bllVeiculo = new BLLVeiculo();
        MembershipUser memberShipUser;       
        DataTable dataTableAgendamentos;
        int agendamentoID, clienteID, veiculoID;
        string userID;

        protected void Page_Load(object sender, EventArgs e)
        {
            PreecherDados();
        }

        public DataTable PopulaGrid()
        {
            DataTable dataTableGridView = new DataTable();
            DataRow dataRow;

            dataTableAgendamentos = bllAgendamento.BuscarAgendamentosCadastrados();
            try
            {
                if (dataTableAgendamentos.Rows.Count > 0)
                {
                    dataTableGridView.Columns.Add("AgendamentoID", typeof(string));
                    dataTableGridView.Columns.Add("Cliente", typeof(string));
                    dataTableGridView.Columns.Add("Veiculo", typeof(string));
                    dataTableGridView.Columns.Add("Placa", typeof(string));
                    dataTableGridView.Columns.Add("Status", typeof(string));
                    dataTableGridView.Columns.Add("DataAgendada", typeof(string));
                    dataTableGridView.Columns.Add("Turno", typeof(string));

                    for (int i = 0; i < dataTableAgendamentos.Rows.Count; i++)
                    {
                        dataRow = dataTableGridView.NewRow();

                        dataRow["AgendamentoID"] = dataTableAgendamentos.Rows[i]["AgendamentoID"];
                        dataRow["Cliente"] = string.Format("{0} {1}", dataTableAgendamentos.Rows[i]["Nome"], dataTableAgendamentos.Rows[i]["Sobrenome"]);
                        dataRow["Veiculo"] = string.Format("{0} {1}", dataTableAgendamentos.Rows[i]["Marca"], dataTableAgendamentos.Rows[i]["Modelo"]);
                        dataRow["Placa"] = dataTableAgendamentos.Rows[i]["Placa"];
                        dataRow["Status"] = VerificaStatus((BLLEnumStatus)(int)dataTableAgendamentos.Rows[i]["StatusAtual"]);
                        dataRow["DataAgendada"] = string.Format("{0:d}", dataTableAgendamentos.Rows[i]["DataAgendada"]);
                        bool turno = (bool)dataTableAgendamentos.Rows[i]["Turno"];
                        if (turno)
                        {
                            dataRow["Turno"] = "Tarde";
                        }
                        else
                        {
                            dataRow["Turno"] = "Manhã";
                        }

                        // Adiciona linha ao DataTable.
                        dataTableGridView.Rows.Add(dataRow);

                    }
                }

            }
            catch (Exception)
            {
                Mensagem.Exibir("Não foi possível carregar os dados para o grid!");
            }
           
            return dataTableGridView;
        }

        public string VerificaStatus(BLLEnumStatus enume)
        {
            //Status 0-Agendado 1-Atrasado 2-Concluído 3-Cancelado 4-Não compareceu           
            string stringStatus = "Agendado";

            switch (enume)
            {
                case BLLEnumStatus.Concluído:
                    stringStatus = "Concluído";
                    break;
                case BLLEnumStatus.Cancelado:
                    stringStatus = "Cancelado";
                    break;
                case BLLEnumStatus.NãoCompareceu:
                    stringStatus = "Não Compareceu";
                    break;
                default:
                    break;
            }

            return stringStatus;
        }

        public void PreecherDados()
        {
            try
            {
                memberShipUser = Membership.GetUser();
                userID = memberShipUser.ProviderUserKey.ToString();
                clienteID = bllCliente.BuscarClienteIDPorUserID(userID);

                gridAgendamentos.DataSource = PopulaGrid();
                gridAgendamentos.DataBind();
              
            }
            catch (Exception)
            {
                Mensagem.Exibir("Não foi possível carregar dados!");
            }
        }

        protected void imgbtnPesquisar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                if (!string.IsNullOrEmpty(txtDataFiltro.Text))
                {
                    DateTime data = Convert.ToDateTime(txtDataFiltro.Text);
                    gridAgendamentos.DataSource = bllAgendamento.BuscarAgendamentoPorData(data);
                    gridAgendamentos.DataBind();
                }
                else
                {
                    Mensagem.Exibir("Informe uma data para pesquisar!");
                }
            }
            catch
            {
                Mensagem.Exibir("Não foi possível encontrar dados!");
            }
        }

        public void LimparCampos()
        {
            txtDataAgendada.Text = string.Empty;            
            rdListTurno.SelectedValue = "M";
            txtVeiculo.Text = string.Empty;
            txtResumo.Text = string.Empty;
            txtDescricao.Text = string.Empty;
        }

        protected void gridAgendamentos_SelectedIndexChanged(object sender, EventArgs e)
        {
            agendamentoID = Convert.ToInt32(gridAgendamentos.SelectedValue.ToString());
            DataTable agendamentoSelecionado = bllAgendamento.BuscarAgendamentoPorAgendamentoID(agendamentoID);

            txtDataAgendada.Text = dataTableAgendamentos.Rows[0]["DataAgendada"].ToString();
            if ((bool)agendamentoSelecionado.Rows[0]["Turno"])
            {
                rdListTurno.SelectedValue = "T";

            }
            else
            {
                rdListTurno.SelectedValue = "M";
            }
            txtVeiculo.Text = string.Format("{0} {1}", dataTableAgendamentos.Rows[0]["Marca"], dataTableAgendamentos.Rows[0]["Modelo"]);
            txtResumo.Text = agendamentoSelecionado.Rows[0]["Resumo"].ToString();
            txtDescricao.Text = agendamentoSelecionado.Rows[0]["Descricao"].ToString();
        }
    }
}